﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Elysium.Demo;
using SIIE_ERP.Codigo;
using SIIE_ERP.View;
using SIIE_ERP.BaseDatos;
using SIIE_ERP.Codigo.Compras;
using SIIE_ERP.BaseDatos.Compras.Transacciones;
using System.Globalization;
using System.Data;
using Elysium.Demo.Informes;
using Elysium.Demo.Controls;

namespace Elysium.Demo.Compras.Transacciones
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class NotaCreditoCompras_Edita : UserControl, IPropiedadesNavegacion
    {
        ////////////////////////////////////////////////////////////////////////////
        //  PROPIEDADES DE NAVEGACION
        public string Texto { get { return _texto; } }
        public TabControl TabControlPadre { get { return _tabControlPadre; } }
        public TabItem TabItemPadre { get { return _tabItemPadre; } }
        private string Id_Proveedor;
        private string Id_Moneda;
        private string _texto;
        private TabControl _tabControlPadre;
        private TabItem _tabItemPadre;

        public void setParametros(string Texto, ref TabControl tabControl, ref TabItem tabItem)
        {
            this._texto = Texto; this._tabControlPadre = tabControl; this._tabItemPadre = tabItem;
        }

        private void ButtonRegresar_Click(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }
        // FIN DE PROPIEDADES DE NAVEGACION
        ///////////////////////////////////////////////////////////////////////////

        private UsuarioActivo _sesion;
        private Int32 Id;

        private double PrecioCostoOriginal;

        public NotaCreditoCompras_Edita(UsuarioActivo usuario, String Id)
        {
            InitializeComponent();
            this._sesion = usuario;
            this.Id = Int32.Parse(Id);
            CargaCatalogos();
            CargaDatos();
            CargaGrid();
        }

        private void CargaDatos()
        {
            var db = new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName);
            var dato = db.Get_Documento_By_Id(SIIE_ERP.BaseDatos.Documentos_Id.Doc_NotaCreditoProveedor, Id).Rows[0];

            if (String.IsNullOrEmpty(dato["Id_Almacen"].ToString()))
                Combo_Almacen.SelectedIndex = 0;
            else
                Combo_Almacen.SelectedValue = dato["Id_Almacen"].ToString();

            if (String.IsNullOrEmpty(dato["Id_Colaborador"].ToString()))
                Combo_Colaborador.SelectedIndex = 0;
            else
                Combo_Colaborador.SelectedValue = dato["Id_Colaborador"].ToString();

            if (String.IsNullOrEmpty(dato["Id_Sucursal"].ToString()))
                Combo_Sucursal.SelectedIndex = 0;
            else
                Combo_Sucursal.SelectedValue = dato["Id_Sucursal"].ToString();

            if (String.IsNullOrEmpty(dato["Id_FormaPago"].ToString()))
                Combo_FormaPago.SelectedIndex = 0;
            else
                Combo_FormaPago.SelectedValue = dato["Id_FormaPago"].ToString();

            if (String.IsNullOrEmpty(dato["Id_MetodoPago"].ToString()))
                Combo_MetodoPago.SelectedIndex = 0;
            else
                Combo_MetodoPago.SelectedValue = dato["Id_MetodoPago"].ToString();

            Label_Estatus.Content = Get_EstatusDocs_Id.Get_Estatus_Desc((EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()));

            if (String.IsNullOrEmpty(dato["Desc_Campana"].ToString()))
                Label_Campana.Content = "Sin Campaña";
            else
                Label_Campana.Content = dato["Desc_Campana"].ToString();

            Label_Saldo.Content = Double.Parse(dato["Saldo"].ToString()).ToString("C");
            Label_Subtotal.Content = Double.Parse(dato["Subtotal"].ToString()).ToString("C");
            Label_Total.Content = Double.Parse(dato["Total"].ToString()).ToString("C");
            Label_Descuento.Content = Double.Parse(dato["Descuento"].ToString()).ToString("C");
            Label_Impuestos.Content = Double.Parse(dato["Impuesto"].ToString()).ToString("C");

            Label_Partidas.Content = dato["Partidas"].ToString();
            Label_Moneda.Content = dato["Desc_Moneda"].ToString();
            Label_RFC_Proveedor.Content = dato["Desc_Proveedor"].ToString();
            Label_Serie.Content = dato["Desc_Serie"].ToString();
            Label_Secuencia.Content = dato["Secuencia"].ToString();

            TextBox_Descripcion.Text = dato["Descripcion"].ToString();
            TextBox_Referencia.Text = dato["Referencia"].ToString();
            TextBox_Encabezado.Text = dato["Encabezado"].ToString();
            TextBox_Pie.Text = dato["Pie"].ToString();
            TextBox_Secuencia_Proveedor.Text = dato["Secuencia_Proveedor"].ToString();

            Fecha_FechaCreacion.SelectedDate = DateTime.Parse(dato["Fecha_Documento"].ToString());
            Fecha_FechaEntrega.SelectedDate = DateTime.Parse(dato["Fecha_Entrega"].ToString());
            Fecha_FechaVencimiento.SelectedDate = DateTime.Parse(dato["Fecha_Vencimiento"].ToString());

            Documento_Compras DocNC = new Documento_Compras(_sesion.RFC, _sesion.UserName);
            if (DocNC.NotaCredito_HasLinea(Id))
            {
                TextBox_NC_IVAPorc.IsEnabled = false;
                TextBox_NC_Observaciones.IsEnabled = false;
                TextBox_NC_Total.IsEnabled = false;

                var dt = Documentos_Lineas.Get_Lineas(Id, Documentos_Id.Doc_NotaCreditoProveedor).Rows;

                foreach (DataRow d in dt)
                {
                    TextBox_NC_IVAPorc.Text = d["Porc_Impuesto"].ToString();
                    TextBox_NC_Total.Text = Double.Parse(d["Precio_Total"].ToString()).ToString("C");
                    Label_NC_IVA.Content = Double.Parse(d["Impuesto"].ToString()).ToString("C");
                    Label_NC_SubTotal.Content = Double.Parse(d["Precio_SubTotal"].ToString()).ToString("C");
                    TextBox_NC_Observaciones.Text = d["Comentarios"].ToString();
                }
            }

            if ((EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()) == EstatusDocs_Id.Estatus_Doc_Cargado)
            {
                 ComboTipoDocumento.IsEnabled = false;
                    ComboDocumentos.IsEnabled = false;
                    CampoImporteAsignar.IsEnabled = false;
                    CampoImporteAsignar.IsEnabled = false ;
                    Button_AplicarNotaC.IsEnabled = false;
            }
            if (
                (EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()) == EstatusDocs_Id.Estatus_Doc_Cancelado ||
                (EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()) == EstatusDocs_Id.Estatus_Doc_Asentado
                )
            {
                if ((EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()) == EstatusDocs_Id.Estatus_Doc_Cancelado)
                {
                    ButtonF1.IsEnabled = false;
                    ButtonF2.IsEnabled = false;
                    ButtonF3.IsEnabled = false;
                    ButtonF4.IsEnabled = false;
                    ButtonF7.IsEnabled = false;
                    Button_Ajuste_Saldo.IsEnabled = false;
                }
                else if ((EstatusDocs_Id)Int32.Parse(dato["Estatus"].ToString()) == EstatusDocs_Id.Estatus_Doc_Asentado)
                {
                    ButtonF3.IsEnabled = false;
                    ButtonF4.IsEnabled = false;
                    Button_Ajuste_Saldo.IsEnabled = true;
                 
                    ComboTipoDocumento.IsEnabled = true;
                    ComboDocumentos.IsEnabled = true;
                    CampoImporteAsignar.IsEnabled = true;
                    CampoImporteAsignar.IsEnabled = true;
                    Button_AplicarNotaC.IsEnabled = true;
                }

                Button_Guardar_Copy.IsEnabled = false;
                Button_Guardar.IsEnabled = false;

                Combo_Almacen.IsEnabled = false;
                Combo_Colaborador.IsEnabled = false;
                Combo_FormaPago.IsEnabled = false;
                Combo_MetodoPago.IsEnabled = false;
                Combo_Sucursal.IsEnabled = false;

                TextBox_NC_IVAPorc.IsEnabled = false;
                TextBox_NC_Observaciones.IsEnabled = false;
                TextBox_NC_Total.IsEnabled = false;

                TextBox_Descripcion.IsEnabled = false;
                TextBox_Encabezado.IsEnabled = false;
                TextBox_Pie.IsEnabled = false;
                TextBox_Referencia.IsEnabled = false;

                Fecha_FechaCreacion.IsEnabled = false;
                Fecha_FechaEntrega.IsEnabled = false;
                Fecha_FechaVencimiento.IsEnabled = false;

                

            }
            else
            {
                Button_Ajuste_Saldo.IsEnabled = false;
                ButtonF1.IsEnabled = false;
                ButtonF2.IsEnabled = false;
                ButtonF7.IsEnabled = false;
            }

            ////////////////////////////////////////////////////////// Aplicación Nota de Crédito
            
            Id_Proveedor = dato["Id_Proveedor"].ToString();
            Id_Moneda = dato["Id_Moneda"].ToString();
            ComboTipoDocumento.Items.Clear();
            ComboTipoDocumento.Items.Add("Todos");
            ComboTipoDocumento.Items.Add("Factura");
            ComboTipoDocumento.SelectedIndex = 0;

            ComboBoxUI.ComboDocumentos_AutoCompleteNotaCreditoCompras(ref ComboDocumentos, _sesion, Id_Proveedor, true, SIIE_ERP.BaseDatos.Documentos_Id.Doc_FacturaProveedor);

        }

        private void CargaCatalogos()
        {
            // Almacenes
            ComboBoxUI.ComboAlmacen(ref Combo_Almacen, _sesion, false);
            // Colaboradores
            ComboBoxUI.ComboColaborador_Compras(ref Combo_Colaborador, _sesion, false);
            //Sucursales
            ComboBoxUI.ComboSucursales(ref Combo_Sucursal, _sesion, false);
            //Formas de Pago
            ComboBoxUI.ComboFormaPago(ref Combo_FormaPago, _sesion, false);
            //Métodos de Pago
            ComboBoxUI.ComboMetodoPago(ref Combo_MetodoPago, _sesion, false);
        }

        private void Button_Guardar_Copy_Click(object sender, RoutedEventArgs e)
        {
            DocumentosComprasClass Aux = new DocumentosComprasClass(_sesion.UserName, _sesion.RFC);

            if (Fecha_FechaEntrega.SelectedDate == null)
            {
                MessageBox.Show("Favor de verificar la fecha de entrega.");
                return;
            }

            if (Fecha_FechaVencimiento.SelectedDate == null)
            {
                MessageBox.Show("Favor de verificar la fecha de vencimiento.");
                return;
            }

            if (Fecha_FechaCreacion.SelectedDate == null)
            {
                MessageBox.Show("Favor de verificar la fecha de creación.");
                return;
            }

            if (Aux.UpdateDocumento_Cabecera(
                    Id,
                    Documentos_Id.Doc_NotaCreditoProveedor,
                    Int32.Parse(Combo_Almacen.SelectedValue.ToString()),
                    Int32.Parse(Combo_Colaborador.SelectedValue.ToString()),
                    Int32.Parse(Combo_Sucursal.SelectedValue.ToString()),
                    Int32.Parse(Combo_FormaPago.SelectedValue.ToString()),
                    Int32.Parse(Combo_MetodoPago.SelectedValue.ToString()),
                    Fecha_FechaCreacion.SelectedDate,
                    Fecha_FechaVencimiento.SelectedDate,
                    Fecha_FechaEntrega.SelectedDate,
                    TextBox_Descripcion.Text,
                    TextBox_Referencia.Text,
                    TextBox_Encabezado.Text,
                    TextBox_Pie.Text,
                    TextBox_Secuencia_Proveedor.Text
                ).Id != 1)
            {
                MessageBox.Show("Error al modificar documento.");
            }
            else
            {
                MessageBox.Show("Cabecera del Documento modificada correctamente.");
            }
        }

        private void Button_Guardar_Click(object sender, RoutedEventArgs e)
        {
            if (Double.Parse(TextBox_NC_Total.Text) == 0)
            {
                MessageBox.Show("Favor de ingresar una cantidad mayor a 0.");
                return;
            }

            if (
            Documentos_Lineas.Insert_Linea(
                _sesion.RFC,
                _sesion.UserName,
                Id,
                Documentos_Id.Doc_NotaCreditoProveedor,
                -1,
                1,
                Double.Parse(Label_NC_SubTotal.Content.ToString(), NumberStyles.Currency),
                0,
                0,
                Double.Parse(TextBox_NC_IVAPorc.Text.ToString()),
                Double.Parse(Label_NC_IVA.Content.ToString(), NumberStyles.Currency),
                Double.Parse(Label_NC_SubTotal.Content.ToString(), NumberStyles.Currency),
                Double.Parse(TextBox_NC_Total.Text),
                TextBox_NC_Observaciones.Text
            ).Id == 1)
            {
                CargaDatos();
                MessageBox.Show("Montos Agregados Correctamente.");
            }
            else
            {
                MessageBox.Show("Error.");
            }

        }

        //Descargar CFDi
        private void ButtonF1_Click_1(object sender, RoutedEventArgs e)
        {
            WindowDescarga Cdfi = new WindowDescarga(Id, Documentos_Id.Doc_NotaCreditoProveedor, _sesion.RFC, _sesion.UserName);
            Cdfi.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); //Cdfi.ShowDialog();            
        }

        //Agregar CFDi
        private void ButtonF1_Click_2(object sender, RoutedEventArgs e)
        {
            WindowCFDi Cdfi = new WindowCFDi(Id, Documentos_Id.Doc_NotaCreditoProveedor);
            Cdfi.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Cdfi.ShowDialog();
        }

        //Asentar
        private void ButtonF1_Click_3(object sender, RoutedEventArgs e)
        {
            Documento_Compras Doc_C = new Documento_Compras(_sesion.RFC, _sesion.UserName);
            Respuesta R = Doc_C.Updata_Documento_Estatus(Id, Documentos_Id.Doc_NotaCreditoProveedor, EstatusDocs_Id.Estatus_Doc_Asentado);

            if (R.Id != 1)
            {
                MessageBox.Show("Error");
            }
            else
            {
               
                _tabControlPadre.Items.Remove(_tabItemPadre);
                SIIE_ERP.View.NavegacionUI.AbrirPestanaEditar(Id.ToString(),
                                                         typeof(NotaCreditoCompras_Edita),
                                                         ref _tabControlPadre, _sesion);
                
            }
        }

        //Cancelar
        private void ButtonF1_Click_4(object sender, RoutedEventArgs e)
        {
            Documento_Compras Doc_C = new Documento_Compras(_sesion.RFC, _sesion.UserName);
            Respuesta R = Doc_C.Updata_Documento_Estatus(Id, Documentos_Id.Doc_NotaCreditoProveedor, EstatusDocs_Id.Estatus_Doc_Cancelado);

            if (R.Id != 1)
            {
                MessageBox.Show("Error");
            }
            else
            {
                _tabControlPadre.Items.Remove(_tabItemPadre);
                SIIE_ERP.View.NavegacionUI.AbrirPestanaEditar(Id.ToString(),
                                                         typeof(NotaCreditoCompras_Edita),
                                                         ref _tabControlPadre, _sesion);
            }
        }

        //Ver Documentos Relacionados
        private void ButtonF1_Click_5(object sender, RoutedEventArgs e)
        {
            WindowRelacion Relacion = new Elysium.Demo.WindowRelacion(Id, Documentos_Id.Doc_NotaCreditoProveedor);
            Relacion.Owner = SIIE_ERP.View.NavegacionUI.GetParentWindow(this); Relacion.ShowDialog();
        }

        //Duplicar
        private void ButtonF1_Click_6(object sender, RoutedEventArgs e)
        {
            Documento_Compras Doc_C = new Documento_Compras(_sesion.RFC, _sesion.UserName);
            int Secuencia = Doc_C.Conversion(Id, Documentos_Id.Doc_NotaCreditoProveedor, Documentos_Id.Doc_NotaCreditoProveedor);

            if (Secuencia == -1)
            {
                MessageBox.Show("Error");
            }
            else
            {
                _tabControlPadre.Items.Remove(_tabItemPadre);
                SIIE_ERP.View.NavegacionUI.AbrirPestanaEditar(Secuencia.ToString(),
                                                         typeof(NotaCreditoCompras_Edita),
                                                         ref _tabControlPadre, _sesion);
            }
        }

        //Imprimir
        private void ButtonF1_Click_7(object sender, RoutedEventArgs e)
        {
            SIIE_ERP.View.NavegacionUI.AbrirPestanaNuevo(typeof(GenericReport_Impresiones),
                                                         ref _tabControlPadre, _sesion, "Informes/Reportes/RPT_Nota_Credito_Proveedor.rdlc", this.Id);
        }

        private void ButtonRegresar_Click_1(object sender, RoutedEventArgs e)
        {
            _tabControlPadre.Items.Remove(_tabItemPadre);
        }

        private void Articulo_TextChanged(object sender, KeyboardFocusChangedEventArgs e)
        {
            if (((TextBox)sender).Name.Equals("TextBox_NC_Total"))
            {
                try
                {
                    try
                    {
                        Double Aux2 = Double.Parse(TextBox_NC_Total.Text);
                    }
                    catch (Exception)
                    {
                        TextBox_NC_Total.Text = "0.0";
                    }

                    Double Aux = Double.Parse(TextBox_NC_Total.Text);

                    var A_PrecioTotal = Aux;
                    var A_Cantidad = 1;
                    var A_PorcDescuento = 0;
                    var A_PorcIVA = TextBox_NC_IVAPorc.Text;

                    Label_NC_SubTotal.Content = Double.Parse(DocumentosComprasCalculos.Get_SubTotal_Final(A_PrecioTotal.ToString(), A_PorcDescuento.ToString(), A_PorcIVA.ToString(), A_Cantidad.ToString())).ToString("C");
                    Label_NC_IVA.Content = Double.Parse(DocumentosComprasCalculos.Get_IVA_Final(A_PrecioTotal.ToString(), A_PorcDescuento.ToString(), A_PorcIVA.ToString(), A_Cantidad.ToString())).ToString("C");
                    PrecioCostoOriginal = Aux;

                }
                catch (Exception)
                {
                    TextBox_NC_Total.Text = "0.0";
                }
            }
            else
            {
                try
                {
                    Double Aux2 = Double.Parse(TextBox_NC_IVAPorc.Text);
                }
                catch (Exception)
                {
                    TextBox_NC_IVAPorc.Text = "0.0";
                }

                var A_PrecioTotal = PrecioCostoOriginal;
                var A_Cantidad = 1;
                var A_PorcDescuento = 1;
                var A_PorcIVA = TextBox_NC_IVAPorc.Text;

                Label_NC_SubTotal.Content = Double.Parse(DocumentosComprasCalculos.Get_SubTotal_Final(A_PrecioTotal.ToString(), A_PorcDescuento.ToString(), A_PorcIVA.ToString(), A_Cantidad.ToString())).ToString("C");
                Label_NC_IVA.Content = Double.Parse(DocumentosComprasCalculos.Get_IVA_Final(A_PrecioTotal.ToString(), A_PorcDescuento.ToString(), A_PorcIVA.ToString(), A_Cantidad.ToString())).ToString("C");

                TextBox_NC_Total.Text = DocumentosComprasCalculos.Get_ArticuloTotal_Final(A_PrecioTotal.ToString(), A_PorcDescuento.ToString(), A_Cantidad.ToString());
            }
        }

        private void ButtonInformacion_Click_1(object sender, RoutedEventArgs e)
        {
            WindowAyuda Ayuda = new Elysium.Demo.WindowAyuda("Nota_Credito_Compras.htm", "Ayuda");
            Ayuda.Show();
        }

        private void Button_Ajuste_Saldo_Click(object sender, RoutedEventArgs e)
        {
            if (Documentos_AjusteSaldo.InsertAjuste_Saldo(Id, Documentos_Id.Doc_NotaCreditoProveedor).Id == 1)
            {
                MessageBox.Show("Ajuste de Saldo Realizado Correctamente");
                CargaDatos();
            }
            else
            {
                MessageBox.Show("ERROR!!!");
            }
        }

        private void CampoImporteAsignar_LostFocus(object sender, RoutedEventArgs e)
        {

        }

        private void ComboTipoDocumento_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {

        }

        private void ComboDocumentos_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            var db = new SIIE_ERP.BaseDatos.Ventas.Transacciones.Documento_VentasHonorarios(_sesion.RFC, _sesion.UserName);
            var seleccionado = ((sender as FilteredComboBox).SelectedItem as CAutocompleteDocumentos);
            if (seleccionado != null)
            {
                var saldo = db.Get_Saldo_Documento_By_Id(seleccionado.TipoDocumento, Int32.Parse(seleccionado.Id), Int32.Parse(Id_Moneda));
                CampoSaldo.Text = saldo.ToString();
            }
            else
            {
                CampoSaldo.Text = "";
            }
        }

        private void Button_AplicarNotaC_Click_1(object sender, RoutedEventArgs e)
        {
            double Saldo_Value = 0;
            double ImporteAsignar_Value = 0;

            try
            {
                Saldo_Value = Double.Parse(CampoSaldo.Text);
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Favor de seleccionar un Documento Válido");
                return;
            }

            try
            {
                ImporteAsignar_Value = Double.Parse(CampoImporteAsignar.Text);
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Favor de ingresar un importe Válido");
                return;
            }

            if (ImporteAsignar_Value > Double.Parse(Label_Saldo.Content.ToString(), NumberStyles.Currency))
            {
                MessageBox.Show("La cantidad ingresada debe ser menor o igual al saldo por aplicar.");
                return;
            }

            if (ImporteAsignar_Value > Double.Parse(CampoSaldo.Text))
            {
                MessageBox.Show("La cantidad ingresada debe ser menor o igual al saldo del documento.");
                return;
            }

            if (ImporteAsignar_Value > 0)
            {
                // Disminuir el valor de Por Asignar
                var ans = new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName).
                        Update_Saldo_Documento_By_Id(Documentos_Id.Doc_NotaCreditoProveedor, Id, Double.Parse(CampoImporteAsignar.Text)).Id;

                if (ans != 1)
                {
                    MessageBox.Show("Fatal error");
                    return;
                }

                // Disminuir el valor del saldo del documento               
                var documento = Int32.Parse(new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName)
                                            .Get_Documento_By_Id_Without_FK((ComboDocumentos.SelectedItem as CAutocompleteDocumentos).TipoDocumento,
                                                                 Int32.Parse(ComboDocumentos.SelectedValue.ToString()))
                                                                 .Rows[0]["Id_Moneda"].ToString());

                var FMonedaToPesos = SIIE_ERP.Codigo.Bancos.Catalogos.TipoDeCambioCode.FromMonedaToPesos(Int32.Parse(Id_Moneda), // Id Moneda del Pago
                                                                      Double.Parse(CampoImporteAsignar.Text), _sesion);

                var Monto = SIIE_ERP.Codigo.Bancos.Catalogos.TipoDeCambioCode.FromPesosToMoneda(documento, // Id Moneda del Documento
                            FMonedaToPesos, _sesion);                                    // Este monto esta en la moneda del documento

                ans = new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName).
                        Update_Saldo_Documento_By_Id((ComboDocumentos.SelectedItem as CAutocompleteDocumentos).TipoDocumento,
                                                     Int32.Parse(ComboDocumentos.SelectedValue.ToString()),
                                                    Monto).Id;
                if (ans != 1)
                {
                    MessageBox.Show("Fatal error");
                    return;
                }


                var notaCredito = new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName).Insertar_Nota_Credito_Proveedores
                 (Convert.ToInt32(Label_Secuencia.Content.ToString()), Convert.ToInt32(ComboTipoDocumento.SelectedIndex.ToString()), Convert.ToInt32(ComboDocumentos.SelectedValue.ToString()), Convert.ToDouble(CampoImporteAsignar.Text),
               Convert.ToInt32(Id_Moneda));
                CargaGrid();


                ////////////////////////////////   Falta agregar la línea de la aplicación de la Nota de Crédito


                MessageBox.Show("Operacion realizada correctamente");
                CampoImporteAsignar.Text = "";
                CargaDatos();
                ComboDocumentos.SelectedItem = null;
            }
            else
            {
                MessageBox.Show("Favor de Ingresar una cantidad mayor a cero en Importe por Aplicar.");
            }
        }

        private void CargaGrid()
        {

            var db = new SIIE_ERP.BaseDatos.Compras.Transacciones.Documento_Compras(_sesion.RFC, _sesion.UserName);
            var nota = db.Get_Nota_Credito_Proveedores(Id).Rows;
            //   var notas = db.get.Get_Articulos().Rows;
            PartidasDataGrid.Items.Clear();

            foreach (DataRow x in nota)
            {
                PartidasDataGrid.Items.Add(new CPartida(


                    x["Tipo_Documento"].ToString()

                     ,
                            x["importe"].ToString(),
                            x["fecha_Alta"].ToString()

                        ));
            }
        }
        class CPartida
        {

            public string Tipo_Documento { get; set; }
            public string importe { get; set; }
            public string fecha_Alta { get; set; }

            public CPartida(
                string Tipo_Documento,
                             string importe,
                             string fecha_Alta
                            )
            {

                this.Tipo_Documento = Tipo_Documento;
                this.importe = importe;
                this.fecha_Alta = fecha_Alta;

            }
        }



    }
}
